reader_map = {
    'akshare:None': 'ezetl.data_models.akshare_models.AkShareModel',
    'akshare:akshare_api': 'ezetl.data_models.akshare_models.AkShareModel',
    'ccxt:None': 'ezetl.data_models.ccxt_models.CCxtModel',
    'ccxt:ccxt_api': 'ezetl.data_models.ccxt_models.CCxtModel',
    'file:None': 'ezetl.data_models.file_models.BaseFileModel',
    'file:file_table': 'ezetl.data_models.file_models.TableFileModel',
    'file:file_json': 'ezetl.data_models.file_models.JsonFileModel',
    'file:file_h5': 'ezetl.data_models.file_models.H5FileModel',
    'http:None': 'ezetl.data_models.http_models.BaseHttpModel',
    'http:http_json': 'ezetl.data_models.http_models.HttpApiModel',
    'http:http_html': 'ezetl.data_models.http_models.HttpHtmlModel',
    'minio:None': 'ezetl.data_models.minio_models.BaseMinioModel',
    'minio:minio_table': 'ezetl.data_models.minio_models.TableMinioModel',
    'minio:minio_json': 'ezetl.data_models.minio_models.JsonMinioModel',
    'minio:minio_h5': 'ezetl.data_models.minio_models.H5MinioModel',
    'redis:None': 'ezetl.data_models.redis_models.BaseRedisModel',
    'redis:redis_string': 'ezetl.data_models.redis_models.RedisStringModel',
    'redis:redis_list': 'ezetl.data_models.redis_models.RedisListModel',
    'redis:redis_list_stream': 'ezetl.data_models.redis_models.RedisListStreamModel',
    'redis:redis_map': 'ezetl.data_models.redis_models.RedisMapModel',
    'mysql:None': 'ezetl.data_models.base_db_sql.BaseDBSqlModel',
    'mysql:sql': 'ezetl.data_models.base_db_sql.BaseDBSqlModel',
    'mysql:mysql_table': 'ezetl.data_models.mysql_table.MysqlTableModel',
    'mysql:mysql_binlog': 'ezetl.data_models.mysql_binlog.MysqlBinlogModel',
    'pgsql:None': 'ezetl.data_models.pgsql_models.PgsqlSqlModel',
    'pgsql:sql': 'ezetl.data_models.pgsql_models.PgsqlSqlModel',
    'pgsql:pgsql_table': 'ezetl.data_models.pgsql_models.PgsqlTableModel',
    'sqlserver:None': 'ezetl.data_models.sqlserver_models.SqlServerSqlModel',
    'sqlserver:sql': 'ezetl.data_models.sqlserver_models.SqlServerSqlModel',
    'sqlserver:sqlserver_table': 'ezetl.data_models.sqlserver_models.SqlServerTableModel',
    'oracle:None': 'ezetl.data_models.oracle_models.OracleSqlModel',
    'oracle:sql': 'ezetl.data_models.oracle_models.OracleSqlModel',
    'oracle:oracle_table': 'ezetl.data_models.oracle_models.OracleTableModel',
    'clickhouse:None': 'ezetl.data_models.clickhouse_table.BaseDBSqlModel',
    'clickhouse:sql': 'ezetl.data_models.base_db_sql.BaseDBSqlModel',
    'clickhouse:clickhouse_table': 'ezetl.data_models.clickhouse_table.CkTableModel',
    'hive:None': 'ezetl.data_models.hive_models.HiveSqlModel',
    'hive:sql': 'ezetl.data_models.hive_models.HiveSqlModel',
    'hive:hive_table': 'ezetl.data_models.hive_models.HiveTableModel',
    'elasticsearch:None': 'ezetl.data_models.elasticsearch_index.EsIndexModel',
    'elasticsearch:elasticsearch_index': 'ezetl.data_models.elasticsearch_index.EsIndexModel',
    'mongodb:None': 'ezetl.data_models.mongo_models.MongoModel',
    'mongodb:mongodb_collection': 'ezetl.data_models.mongo_models.MongoModel',
    'neo4j:None': 'ezetl.data_models.neo4j_models.N4jSqlModel',
    'neo4j:sql': 'ezetl.data_models.neo4j_models.N4jSqlModel',
    'neo4j:neo4j_graph': 'ezetl.data_models.neo4j_models.N4jGraphModel',
    'influxdb:None': 'ezetl.data_models.ixdb_models.InfluxDBSqlModel',
    'influxdb:sql': 'ezetl.data_models.ixdb_models.InfluxDBSqlModel',
    'influxdb:influxdb_table': 'ezetl.data_models.ixdb_models.InfluxDBTableModel',
    'kafka:None': 'ezetl.data_models.kafka_topic.KafkaTopicModel',
    'kafka:kafka_topic': 'ezetl.data_models.kafka_topic.KafkaTopicModel',
    'prometheus:None': 'ezetl.data_models.prometheus_models.BasePromModel',
    'prometheus:prometheus_metric': 'ezetl.data_models.prometheus_models.PromMetricModel',
    'prometheus:prometheus_promql': 'ezetl.data_models.prometheus_models.PromQlModel',
}

writer_map = {
    'minio:minio_table': 'ezetl.data_models.minio_models.TableMinioModel',
    'minio:minio_json': 'ezetl.data_models.minio_models.JsonMinioModel',
    'minio:minio_h5': 'ezetl.data_models.minio_models.H5MinioModel',
    'redis:redis_string': 'ezetl.data_models.redis_models.RedisStringModel',
    'redis:redis_list': 'ezetl.data_models.redis_models.RedisListModel',
    'redis:redis_map': 'ezetl.data_models.redis_models.RedisMapModel',
    'mysql:mysql_table': 'ezetl.data_models.mysql_table.MysqlTableModel',
    'pgsql:pgsql_table': 'ezetl.data_models.pgsql_models.PgsqlTableModel',
    'sqlserver:sqlserver_table': 'ezetl.data_models.sqlserver_models.SqlServerTableModel',
    'oracle:oracle_table': 'ezetl.data_models.oracle_models.OracleTableModel',
    'clickhouse:clickhouse_table': 'ezetl.data_models.clickhouse_table.CkTableModel',
    'hive:hive_table': 'ezetl.data_models.hive_models.HiveTableModel',
    'elasticsearch:elasticsearch_index': 'ezetl.data_models.elasticsearch_index.EsIndexModel',
    'kafka:kafka_topic': 'ezetl.data_models.kafka_topic.KafkaTopicModel',
    'mongodb:mongodb_collection': 'ezetl.data_models.mongo_models.MongoModel',
    'neo4j:neo4j_graph': 'ezetl.data_models.neo4j_models.N4jGraphModel',
    'influxdb:influxdb_table': 'ezetl.data_models.ixdb_models.InfluxDBTableModel',
}
